package com.tencent.wxcloudrun.utils;

import org.apache.commons.lang3.StringUtils;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * @author lichongbing
 * @version 1.0.0
 * @createdate 2023/2/19 14:36
 * @description: TODO
 */
public class MD5 {
    /**
     * 对字符串进行Md5加密
     *
     * @param input 原文
     * @return md5后的密文
     */
    public static String md5(String input) throws Exception {
        return md5(input.getBytes());
    }

    /**
     * 对字符串进行Md5加密
     *
     * @param input 原文
     * @param salt 随机数
     * @return string
     */
    public static String md5(String input, String salt) throws Exception {
        if(StringUtils.isEmpty(salt)) {
            salt = "";
        }
        return md5(salt + md5(input));
    }

    /**
     * 文件md5计算
     *
     * @param bytes
     * @return
     */
    public static String md5(byte[] bytes) throws Exception {
        byte[] code;
        try {
            code = MessageDigest.getInstance("md5").digest(bytes);
        } catch (NoSuchAlgorithmException e) {
            throw new Exception(e.getMessage());
        }
        BigInteger bi = new BigInteger(code);
        return bi.abs().toString(32).toUpperCase();
    }
}
